package com.atguigu.chaptar6

object $02_CollectionToCollecion {
  //衍生集合操作:生成新的集合
  def main(args: Array[String]): Unit = {
    val list = List(2,4,7,1,9,10,11,11)
    //1.去重
    val list1 = list.distinct
    //2.删除前多少个元素,获取剩下所有元素
    val list2 = list.drop(3)
    //3.删除后多少个元素,获取剩下所有元素
    val list3 = list.dropRight(3)
    //4.获取第一个元素
    val head = list.head
    //5.获取最后一个元素
    val last = list.last
    //获取前多少个元素
    val list10 = list.take(3)
    //获取后多少个元素
    val list11 = list.takeRight(3)
    //6.获取除开最后元素的所有元素
    val list4 = list.init
    //7.获取除开第一个元素的所有元素
    val list5 = list.tail
    //8.反转
    val list6 = list.reverse
    //9.角标切割获取子集合
    val list7 = list.slice(0, 2)
    //10.划窗 sliding(窗口长度,滑动长度)
      //得到一个包含各个窗口的迭代器,每个窗口长度为3,滑动长度为1
    val list8 = list.sliding(3)
      //得到一个包含各个窗口的迭代器,每个窗口长度为3,滑动长度为1
    val list9 = list.sliding(3,2)
    //交集:两个集合都有的元素
    val list12 = list.intersect(list7)
    //差集[A差B的结果就是保留A中有,B中没有的元素]
    val list13 = list.diff(list5)
    //并集[不会去重]
    val list14 = list.union(list6)
    //拉链:两个集合拉链后生成一个元素为元组的新集合,zip拉不了的抛弃(只有一个集合有的抛弃)
    val list15 = list.zip(list5)
    //反拉链:将元素为元组的集合反拉链生成一个元素为集合的二元元组
    val tuple = list15.unzip
    //将元素与角标拉链:spark底层常用
    val list16 = list.zipWithIndex
    println(list16)
  }

}
